爆速検索APIサービスAlgoliaを使ってみる #algolia
はじめに
AlgoliaはWebサイトやモバイルアプリケーションなどで使えるフランス発の検索APIサービスです。一番の特徴は爆速。GUIのダッシュボードががSaaSとして提供され、多くのプログラム言語向けのAPIクライアントが提供されています。
ま、まずはやってみないとわかりませんよね。なのでやってみました!
やってみた
アカウントの作成
Algliaは非商用利用のDeveloperライセンスであれば無償で使えますし、トライアルライセンスも提供されています。今回はトライアルライセンスを取得しました。サインアップページからアカウントを作成します。
API Keyの取得
サインアップするとダッシュボードが表示されます。左側ペインの[API keys]からAPIキーを取得します。なおAdmin API Keyは鍵マークをクリックすることで表示されます。
環境の確認
今回は僕のMacbook上で試しました。
$ sw_vers ProductName: Mac OS X ProductVersion: 10.13.6 BuildVersion: 17G8029 $ python3 --version Python 3.7.1 $ pip3 --version pip 18.1 from /usr/local/lib/python3.7/site-packages/pip (python 3.7)
API Clientをインストールする
pipを使ってAlgoliaのPython API Clientをインストールします。
$ pip install --upgrade algoliasearch (...snip...) Successfully installed algoliasearch-2.0.4 requests-2.22.0 typing-3.7.4
データをプッシュする
データをプッシュするためのスクリプトを作成します。 "YourApplicationID"と"YourAdminAPIKey"は自分のAPIキーに置き換えてください。
$ vi push_data.py import json from algoliasearch.search_client import SearchClient client = SearchClient.create( "YourApplicationID", "YourAdminAPIKey" ) index = client.init_index('demo_media') with open('media.json') as f: records = json.load(f) index.save_objects(records, {'autoGenerateObjectIDIfNotExist': True});
Algoliaが提供しているサンプルデータを入手して、スクリプトと同じディレクトリに保存しておきます。
スクリプトを実行します。特にエラーがでなければデータがプッシュされているはずです。
$ python3 ./push_data.py
検索する
では検索するためのスクリプトを作成します。AWSというキーワードを検索します。先程と同様、"YourApplicationID"と"YourAdminAPIKey"は自分のAPIキーに置き換えてください。
$ vi ./search.py from algoliasearch.search_client import SearchClient client = SearchClient.create( "YourApplicationID", "YourAdminAPIKey" ) index = client.init_index('demo_media') print(index.search('AWS'))
実行!
$ python3 ./search.py {'hits': [{'post_id': 3699, 'post_title': 'DNS fallback for better resilience', 'post_date': 1431362549, 'post_date_formatted': 'May 11th 2015', 'author_name': 'Adam Surak', (...snip...) 'matchedWords': ['aws']}, 'record_index': {'value': '0', 'matchLevel': 'none', 'matchedWords': []}}}], 'nbHits': 14, 'page': 0, 'nbPages': 1, 'hitsPerPage': 20, 'processingTimeMS': 4, 'exhaustiveNbHits': True, 'query': 'AWS', 'params': 'query=AWS'}
1件のレコードがヒットし、検索出来ました!
さいごに
実装も検索もサクッと出来ました。しかも爆速。今後も調査していきたいと思います!